// ⚠️注意：使用 navigator 组件不会被检测到，请使用事件绑定的方式来跳转！！！
// ⚠️注意：拦截[uni.switchTab](https://uniapp.dcloud.io/api/router?id=switchtab)本身没有问题。
// 但是在微信小程序端点击`tabbar`的底层逻辑并不是触发`uni.switchTab`。
// 所以误认为拦截无效，此类场景的解决方案是在`tabbar`页面的页面生命周期`onShow`中处理。

// import permission from "@/permission.js"
// onLaunch() {
//   permission()
// }
export default async function permission() {
	const list = ["navigateTo", "redirectTo", "reLaunch", "switchTab", "navigateBack"]
	list.forEach((item) => {
		uni.addInterceptor(item, {
			invoke(e) {
				// 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
				const url = e.url && e.url?.split("?")[0]

				// 如果目标页面是登录页面，直接放行
				if (url === "/pages/login/login") {
					return e
				}

				// 先有url 再判断不在白名单的路径并且没有token
				if (url && !whiteList.includes(url) && !token) {
					// 退出登录的操作
					uni.reLaunch({
						url: "/pages/login/login"
					})
					return false // 阻止原有的导航
				}
				return e
			},
			fail(err) {
				// 失败回调拦截
				console.log(err)
			}
		})
	})
}
